import request from "@/utils/request";

const ROLE_BASE_URL = "/user-service";

class RoleAPI {
  /** 获取角色分页数据 */
  static listPage(queryParams?: RolePageQuery) {
    return request<any, PageResult<RolePageVO[]>>({
      url: `${ROLE_BASE_URL}/adminRole/admin/listPage`,
      method: "post",
      data: queryParams,
    });
  }

  /** 获取角色下拉数据源 */
  static getRoleList() {
    return request<any, RolePageVO[]>({
      url: `${ROLE_BASE_URL}/adminRole/admin/list`,
      method: "get",
    });
  }

  /**
   * 获取角色的菜单ID集合
   *
   * @param roleId 角色ID
   * @returns 角色的菜单ID集合
   */
  static getRoleMenuIds(roleId: number) {
    return request<any, number[]>({
      url: `${ROLE_BASE_URL}/adminRole/admin/getRoleMenuIdList`,
      method: "get",
      params:{roleId}
    });
  }

  /**
   * 分配菜单权限
   *
   * @param roleId 角色ID
   * @param data 菜单ID集合
   */
  static saveRoleMenu(roleId: number, data: number[]) {
    return request({
      url: `${ROLE_BASE_URL}/adminRole/admin/saveRoleMenu`,
      method: "post",
      data: { roleId:roleId,menuIdList:data},
    });
  }

  /**
   * 获取角色表单数据
   *
   * @param id 角色ID
   * @returns 角色表单数据
   */
  static getFormData(id: number) {
    return request<any, RoleForm>({
      url: `${ROLE_BASE_URL}/adminRole/admin/getRole`,
      params:{roleId:id},
      method: "get",
    });
  }

  /** 添加角色 */
  static add(data: RoleForm) {
    return request({
      url: `${ROLE_BASE_URL}/adminRole/admin/add`,
      method: "post",
      data: data,
    });
  }

  /**
   * 更新角色
   *
   * @param id 角色ID
   * @param data 角色表单数据
   */
  static update(id: number, data: RoleForm) {
    return request({
      url: `${ROLE_BASE_URL}/adminRole/admin/update`,
      method: "post",
      data: data,
    });
  }

  /**
   * 批量删除角色，多个以英文逗号(,)分割
   *
   * @param ids 角色ID字符串，多个以英文逗号(,)分割
   */
  static deleteByIds(ids: number[]) {
    return request({
      url: `${ROLE_BASE_URL}/adminRole/admin/delRoles`,
      data:{roleIds:ids},
      method: "post",
    });
  }
}

export default RoleAPI;

/** 角色分页查询参数 */
export interface RolePageQuery extends PageQuery {
  /** 搜索关键字 */
  roleCode?: string;
  roleName?: string;
  /** 创建开始时间 */
  createTimeRange?:Date[2];
}

/** 角色分页对象 */
export interface RolePageVO {
  /** 角色ID */
  roleId?: number;
  /** 角色编码 */
  roleCode?: string;

  /** 角色名称 */
  roleName?: string;
  /** 角色状态 */
  enabled?: number;
  /**创建人**/
  creator?:string;
  /** 创建时间 */
  createTime?: Date;
  /**修改人**/
  updater?:string;
  /** 修改时间 */
  updateTime?: Date;
}

/** 角色表单对象 */
export interface RoleForm {
  /** 角色ID */
  roleId?: number;
  /** 角色编码 */
  roleCode: string;
  /** 角色名称 */
  roleName: string;
  /** 角色状态(1-正常；0-停用) */
  enabled?: number;
}
